Conversation
Design GitHubJackson interface with methods for reading/writing JSON Implement GitHubJackson2 and GitHubJackson3 Create DefaultGitHubJackson factory with programmatic selection Create GitHubJacksonException wrapper classes Add GitHubBuilder.withJackson() for configuring Jackson implementation Add testing infrastructure for both Jackson versions
src/main/java/org/kohsuke/github/internal/DefaultGitHubJackson.java
Outdated
Show resolved
Hide resolved
| * maintain backward compatibility with code that expects Jackson 2.x ObjectReader/ObjectWriter. | ||
| * </p> | ||
| */ | ||
| private static final GitHubJackson2 JACKSON2_STATIC = new GitHubJackson2(); |
There was a problem hiding this comment.
| private static final GitHubJackson2 JACKSON2_STATIC = new GitHubJackson2(); | |
| private static final GitHubJackson2 JACKSON_STATIC = new DefaultGitHubJackson.createDefault(); |
There was a problem hiding this comment.
The JACKSON2_STATIC field is intentionally typed as GitHubJackson2 because it's used by the static methods getMappingObjectReader() and getMappingObjectWriter() which return Jackson 2.x specific types (com.fasterxml.jackson.databind.ObjectReader/ObjectWriter).
If we change this to use DefaultGitHubJackson.createDefault(), it would return GitHubJackson3 when Jackson 3 is available, which would break these methods since they need Jackson 2.x types.
Should we:
- Keep JACKSON2_STATIC as-is for backward compatibility with these static methods?
- Deprecate these Jackson 2.x specific static methods?
- Something else?
|
Hey there Is there anything I could do to help this one move forward? Sadly, issues like #2166 are blocking Jackson upgrades and Jackson is targeted often for vulnerabilities |
|
#2166 has been addressed. I'll get to this shortly. |
Description
See #2173 for the initial PR and associated discussion.
This PR is the follow-up of #2182.
Before submitting a PR:
@linkJavaDoc entries to the relevant documentation on https://docs.github.com/en/rest .mvn -D enable-ci clean install site "-Dsurefire.argLine=--add-opens java.base/java.net=ALL-UNNAMED"locally. If this command doesn't succeed, your change will not pass CI.main. You will create your PR from that branch.When creating a PR: